Delivery of video content is available through a mobile device or other living room-connected devices, such as personal computers. Different protocols may be used to stream the video. One protocol is hypertext transfer protocol (HTTP) live streaming (HLS). The HLS protocol delivers video over HTTP via a playlist of small segments that are made available in a variety of bitrates typically from one or more content delivery networks (CDNs). This allows a media player to switch both bitrates and content sources on a segment-by-segment basis. The switching helps compensate for network bandwidth variances and also infrastructure failures that may occur during playback of the video.
Different device platforms usually have different media players, which each may have their own implementation of the HLS protocol. The different implementations may affect the quality of a viewing experience and determine whether video playback is uninterrupted. For example, the different protocol implementations may differ in how much of the HLS protocol is implemented, but also in the heuristics used in streaming and bitrate switching (e.g., how switching on a segment-by-segment basis between bitrates is performed). The differences in implementation may be noticeable when sudden changes in the stability of the network occur, when playing video content on low-bandwidth networks, or when partial failures of the infrastructure delivering the video occur.
It is desirable to provide the best viewing experience possible, irrespective of network conditions. Reproducing the client environment (e.g., the network conditions, client device, video played) may be used to test how a media player reacts when the network conditions occur. For example, reproducing the client environment is helpful in determining the root cause of a problem. Different solutions may be determined based on the reproduced environment, such as issues with the client or the media player may be determined. Without reproducing the problems, it may be hard to determine how to fix the problem.
In one example, reproducing a problem may be performed via hardware configuration. For example, a network device is set such that all traffic flowing through the network device produces a desired network condition, such as all traffic sent through the network device may be delayed. Setting the conditions on the hardware may produce the network conditions; however, changing the hardware implementation of a network device may be time-consuming and inconvenient. Additionally, all traffic flowing through the hardware device is affected.